/*
  声明变量的问题
    使用var声明变量

    1. 允许重复的变量声明：导致数据覆盖
    2. 变量提升：闭包问题
    3. 全局变量挂载到全局对象：全局对象成员污染问题
*/

// 1. 允许重复的变量声明：导致数据覆盖
/* var a = 1;
function print() {
  console.log(a);
}
//  假设有一千行代码，变量重复声明后，使用var不会出错
var a = 2;
print(); */

// 2.变量提升：怪异的数据访问
/* if (Math.random() < 0.5) {
  var a = "abc";
  console.log(a);
} else {
  console.log(a);
} */

// 2. 变量提升：闭包问题
/* var div = document.getElementById("divButtons");
for (var i = 0; i <= 10; i++) {
  var btn = document.createElement("button");
  btn.innerHTML = `按钮${i}`;
  div.appendChild(btn);
  (function (i) {
    btn.onclick = function () {
      console.log(`当前按钮${i}`);
    };
  })(i);
} */

// 3. 全局变量挂载到全局对象：全局对象成员污染问题
/* var abc = "123";
console.log(window.abc); */
